Effect<A, E, R>
code:-
┌─── Represents the success type
│        ┌─── Represents the error type
│        │      ┌─── Represents required dependencies
▼        ▼      ▼
Effect<Success, Error, Requirements>
Effectは遅延実行される
Effectはimmutableである
Effect library内の全ての関数は新しいEffect値を生成する
Success
成功した場合の型
neverの場合は、失敗するまで無限に実行され続けることを意味する
Error
失敗した場合の型
neverの場合は、失敗することはありえないことを意味する
Requirements
code:ts
declare const program: Effect.Effect<number, Error, SomeContext>
type A = Effect.Effect.Success<typeof program>	// number
type E = Effect.Effect.Error<typeof program>	// Error
type R = Effect.Effect.Context<typeof program>	// SomeContext